/**
 * 
 */
package br.com.freelancer.util;

import java.math.BigDecimal;

/**
 * @author tiago
 *
 */
public class BigDecimalHelper {

	public static boolean equals(BigDecimal valor1, Integer valor2) {
		if(ObjectHelper.isNotNull(valor1) && ObjectHelper.isNotNull(valor2)){
			return equals(valor1,BigDecimal.valueOf(valor2));

		}else{

			return false;
		}
	}

	public static boolean equals(BigDecimal valor1, BigDecimal valor2) {
		if(ObjectHelper.isNotNull(valor1) && ObjectHelper.isNotNull(valor2)){
			return valor1.compareTo(valor2) == 0;

		}else{

			return false;
		}		
	}

	public static BigDecimal getBigDecimal(Long valor) {

		if(ObjectHelper.isNotNull(valor)){
			return BigDecimal.valueOf(valor);
		}
		return null;
	}

	public static BigDecimal getBigDecimal(String valor) {

		if(ObjectHelper.isNotEmpty(valor)){
			valor = valor.replaceAll("\\,", "\\.");
			valor = valor.replaceAll("[^0-9\\.]", "");
			//System.out.println(valor);
			return new BigDecimal(valor);
		}
		return null;
	}

	public static BigDecimal getBigDecimalFormatado(String valor) {

		if(ObjectHelper.isNotEmpty(valor)){
			valor = valor.replaceAll("\\.", "");
			valor = valor.replaceAll("\\,", "\\.");
			valor = valor.replaceAll("[^0-9\\.]", "");
			//System.out.println(valor);
			return new BigDecimal(valor);
		}
		return null;
	}

	public static BigDecimal getBigDecimal(Integer valor) {
		if(ObjectHelper.isNotNull(valor)){
			return BigDecimal.valueOf(valor);
		}
		return null;
	}

	public static String BigDecimal2String(Object object) {
		if(ObjectHelper.isNotNull(object)){
			return ((BigDecimal)object).toPlainString();
		}
		return "";
	}

	/**
	 * soma dois bigDecimal
	 * se as entradas forem null o resultado será null
	 * @param big1
	 * @param big2
	 * @return
	 */
	public static BigDecimal soma(BigDecimal big1, BigDecimal big2) {

		if(ObjectHelper.isNull(big1)){
			return big2;
		}else if( ObjectHelper.isNull(big2)){
			return big1;
		}
		return big1.add(big2);

	}

	public static String toString(BigDecimal big) {
		if (ObjectHelper.isNotNull(big)) {
			return big.toPlainString();
		}else{
			return "";
		}
	}

	public static boolean equals(BigDecimal valor1, String valor2) {
		return equals(valor1, getBigDecimal(valor2))	;	
	}

	public static BigDecimal multiplica(BigDecimal bigDecimal, int i) {
		return bigDecimal.multiply(getBigDecimal(i));

	}

	public static BigDecimal getBigDecimal(BigDecimal valor) {
		return new BigDecimal(toString(valor));
	}

	public static BigDecimal getBigDecimal(Object valor) {
		return new BigDecimal(toString((BigDecimal) valor));
	}
	public static BigDecimal getBigDecimal(Double valor) {
		return new BigDecimal(valor);
	}

	public static BigDecimal multiplica(BigDecimal contratual,
			BigDecimal vrProdutoParceiro) {
		if(contratual!=null)
			return contratual.multiply(getBigDecimal(vrProdutoParceiro));
		else
			return null;


	}

	public static BigDecimal dive(BigDecimal multiplica, int i) {
		if(multiplica!=null)
			return multiplica.divide(getBigDecimal(i));
		return null;
	}

}
